home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_100 / 119_01 / macbind.c < prev    next >
Text File  |  1984-07-11  |  15KB  |  430 lines

  1. /* MACBIND.C - Customized BINDINGS.C
  2.  
  3. This contains MMakMacro and MDoMacro, which build and execute macros.
  4. MMakMacro is bound to M-M and MDoMacro is bound to M-C-M. Macros are
  5. saved in spare. Written by Barry A. Dobyns. 07/25/81.
  6. Modifications Record:
  7.         07/25/81    Original implementation in MINCE 2.6 completed. [BAD].
  8.  
  9. Also, This contains the MNewDsp and MRNewDsp, which take arguments.
  10. The argument indicates how many lines to move down or up before doing
  11. a NewDsp. Without an arg, they are equivalent to a single NewDsp. I
  12. always seem to be doing a C-U nn C-N C-L or C-U nn C-P C-L and this
  13. takes care of that for me in an elegant way. Written by Barry A.
  14. Dobyns 07/22/81.
  15. Modifications Record:
  16.         07/22/81    Original implementation in MINCE 2.6 completed. [BAD].
  17.  
  18. This one has MIncSearch() and MIncRSearch() which implement
  19. incremental searches in a way halfway between Mince's  non-incremental
  20. MSearch and EMACS ^R Incremental Search. The MIncSearch gets the
  21. search argument all at once, like MSearch, and unlike ^R Incremental Search
  22. but leaves the point after the best match (the most matches from left
  23. to right for the search arg) unlike MSearch and like ^R Incremental Search.
  24. I have taken the liberty of binding them to C-R and C-S so as to
  25. replace the regular MSearch and MRsearch, since I couldn't find any other
  26. good ways to name them consistent with the current naming philosophy.
  27. MIncSearch() and MIncRSearch() written by Barry A. Dobyns 07/07/81.
  28. Modifications record:
  29.         07/07/81    Original Implementation in MINCE 2.5 completed. [BAD].
  30.         07/22/81    Bug fixes and installation in Version 2.6.
  31.                     Significant speed improvements by running under
  32.                     2.6, even with the redisplay, it is still faster
  33.                     than the old 2.5 searches alone. I strongly do not
  34.                     reccommend permanent implementation in 2.5. [BAD].
  35.         07/23/81  Renamed to MSearch and MRSearch to save space. 
  36.                 I only need one set of search commands at a time.
  37.                 Since L2 and CLINK both ignore all occurences of a
  38.                 function except for the first. With COMM1 ahead of
  39.                     the -l option on the L2 command line, we MUST name
  40.                     these guys the same as the functions they replace,
  41.                     or edit them out of either the source (before
  42.                     compilation) or the .CRL (with CLIB). I can compile
  43.                     and link this into a small -e7900 MINCE in 2.6,
  44.                     but I believe my TERM routines are a bit shorter
  45.                     overall, so you may not be able to. [BAD].
  46.         09/19/81  Renamed back to MIncSearch and MIncRSearch, since
  47.                     I have moved MSearch and MRSearch, along with all
  48.                     of the page mode functions [e.g. MP????() ] into
  49.                     COMM4.C so that they will not be linked in
  50.                     anymore. COMM4.C appears after the -l switch on
  51.                     the L2 command line. Page Mode is commented out of
  52.                     BINDINGS.C. It is tempting to put all of the
  53.                     COMMn.C files after the -l option, and not play
  54.                     musical source code anymore. [BAD].
  55. */
  56.  
  57. /* BINDINGS.C - Set up the key bindings for Mince
  58.  
  59. The seller of this software hereby disclaims any and all
  60. guarantees and warranties, both express and implied.  No
  61. liability of any form shall be assumed by the seller, nor shall
  62. direct, consequential, or other damages be assumed by the seller.
  63. Any user of this software uses it at his or her own risk.
  64.  
  65. Due to the ill-defined nature of "fitness for purpose" or similar
  66. types of guarantees for this type of product, no fitness for any
  67. purpose whatsoever is claimed or implied.
  68.  
  69. The physical medium upon which the software is supplied is
  70. guaranteed for one year against any physical defect.  If it
  71. should fail, return it to the seller, and a new physical medium
  72. with a copy of the purchased software shall be sent.
  73.  
  74. The seller reserve the right to make changes, additions, and
  75. improvements to the software at any time; no guarantee is made
  76. that future versions of the software will be compatible with any
  77. other version.
  78.  
  79. The parts of this disclaimer are severable and fault found in any
  80. one part does not invalidate any other parts.
  81.  
  82.     Copyright (c) 1981 by Mark of the Unicorn
  83.     Created for Version 2.3  10/4/80  JTL
  84.     Updated to version three  1/7/81  JTL
  85.  
  86.     This file contains the function table initializers and mode set up
  87. functions */
  88.  
  89. #include "mince.gbl"
  90.  
  91. finit1()            /* initialize the control and self insert key bindings */
  92. {
  93.     int cnt;
  94.     int MInsert(), MSetMrk(), MBegLin(), MPrevChar();
  95.     int MNotImpl(), MDelChar(), MEndLin(), MNextChar();
  96.     int MAbort(), MDelLin(), MNewDsp(), MNewLin();
  97.     int MNextLin(), MOpenLin(), MPrevLin(), MQuote();
  98.     int MIncRSearch(), MIncSearch(), MSwapChar(), MArg();
  99.     int MNextPage(), MDelRgn(), MCtrlX(), MYank();
  100.     int MMeta(), MDelIndent(), MRDelChar(), MIndent();
  101.  
  102.  
  103.     for (cnt=0; cnt<128; ++cnt) functs[cnt] = MInsert;
  104.     TKbChk();
  105.     functs[0] = MSetMrk;        /* C-@ */
  106.     functs[1] = MBegLin;        /* C-A */
  107.     functs[2] = MPrevChar;        /* C-B */
  108.     functs[3] = MNotImpl;        /* C-C */
  109.     functs[4] = MDelChar;        /* C-D */
  110.     functs[5] = MEndLin;        /* C-E */
  111.     functs[6] = MNextChar;        /* C-F */
  112.     functs[7] = MAbort;            /* C-G */
  113.     functs[8] = MPrevChar;        /* C-H */
  114.                             /* C-I */
  115.     functs[10] = MIndent;        /* C-J */
  116.     functs[11] = MDelLin;        /* C-K */
  117.     functs[12] = MNewDsp;        /* C-L */
  118.     functs[13] = MNewLin;        /* C-M */
  119.     functs[14] = MNextLin;        /* C-N */
  120.     functs[15] = MOpenLin;        /* C-O */
  121.     functs[16] = MPrevLin;        /* C-P */
  122.     functs[17] = MQuote;        /* C-Q */
  123.     functs[18] = MIncRSearch;        /* C-R */
  124.     functs[19] = MIncSearch;        /* C-S */
  125.     functs[20] = MSwapChar;        /* C-T */
  126.     functs[21] = MArg;            /* C-U */
  127.     functs[22] = MNextPage;        /* C-V */
  128.     functs[23] = MDelRgn;        /* C-W */
  129.     functs[24] = MCtrlX;        /* C-X */
  130.     functs[25] = MYank;            /* C-Y */
  131.     functs[26] = MNotImpl;        /* C-Z */
  132.     functs[ESC] = MMeta;        /* ESC */
  133.     functs[28] = MDelIndent;        /* C-\ */
  134.     functs[29] = MNotImpl;        /* C-] */
  135.     functs[30] = MNotImpl;        /* C-^ */
  136.     functs[31] = MNotImpl;        /* C-_ */
  137.     functs[DEL] = MRDelChar;        /* DEL */
  138.     }
  139.  
  140. finit2()            /* set up the Meta key bindings */
  141. {
  142.     int cnt;
  143.     int MNotImpl(), MAbort(), MDelELin(), MRNewDsp(); 
  144.     int MDoMacro(), MQryRplc();
  145.     int MMakeDel(), MToStart(), MToEnd(), MBSent();
  146.     int BWord(), MCapWord(), MDelWord(), MFSent();
  147.     int FWord(), MMrkPara(), MDelSent(), MLowWord();
  148.     int MMakMacro(), MFillPara(), MReplace(), MCntrLine(), MUpWord();
  149.     int MPrevPage(), MCopyRgn(), MBPara(), MDelWhite();
  150.     int MFPara(), MRDelWord(), MSetMrk(), MSwapWord();
  151.  
  152.     for (cnt=128; cnt<256; ++cnt) functs[cnt] = MNotImpl;
  153.     TKbChk();
  154.     functs[128+7] = MAbort;                    /* M-C-G */
  155.     functs[128+8] = MRDelWord;                /* M-C-H */
  156.     functs[128+11] = MDelELin;                /* M-C-K */
  157.     functs[128+12] = MRNewDsp;                /* M-C-L */
  158.     functs[128+13] = MDoMacro;                /* M-C-M */
  159.     functs[128+18] = MQryRplc;                /* M-C-R */
  160.     functs[128+23] = MMakeDel;                /* M-C-W */
  161.     functs[128+'<'] = MToStart;                /* M-< */
  162.     functs[128+'>'] = MToEnd;                /* M-> */
  163.     functs[128+' '] = MSetMrk;                /* M-  */
  164.     functs[128+'A']=functs[128+'a'] = MBSent;    /* M-A */
  165.     functs[128+'B']=functs[128+'b'] = BWord;    /* M-B */
  166.     functs[128+'C']=functs[128+'c'] = MCapWord;    /* M-C */
  167.     functs[128+'D']=functs[128+'d'] = MDelWord;    /* M-D */
  168.     functs[128+'E']=functs[128+'e'] = MFSent;    /* M-E */
  169.     functs[128+'F']=functs[128+'f'] = FWord;    /* M-F */
  170.     functs[128+'H']=functs[128+'h'] = MMrkPara;    /* M-H */
  171.     functs[128+'K']=functs[128+'k'] = MDelSent;    /* M-K */
  172.     functs[128+'L']=functs[128+'l'] = MLowWord;    /* M-L */
  173.     functs[128+'M']=functs[128+'m'] = MMakMacro;    /* M-M */
  174.     functs[128+'Q']=functs[128+'q'] = MFillPara;    /* M-Q */
  175.     functs[128+'R']=functs[128+'r'] = MReplace;    /* M-R */
  176.     functs[128+'S']=functs[128+'s'] = MCntrLine;    /* M-S */
  177.     functs[128+'T']=functs[128+'t'] = MSwapWord;    /* M-T */
  178.     functs[128+'U']=functs[128+'u'] = MUpWord;    /* M-U */
  179.     functs[128+'V']=functs[128+'v'] = MPrevPage;    /* M-V */
  180.     functs[128+'W']=functs[128+'w'] = MCopyRgn;    /* M-W */
  181.     functs[128+'[']